// basicnpc.txt
// A very simple, naive text. Creature attacks anything it hates nearby.
// Once it has won, it returns to its home.
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this 
//     is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
//     creature is killed, sets SDF(3,5) to 1.)
//   Cell 3 - Dialogue node to start with if talked to. if left at 0, this
//     character doesn't talk.

begincreaturescript;

variables;

short i,target;

body;

beginstate INIT_STATE;
	if (get_memory_cell(0) == 2)
		set_mobility(ME,0);
	break;

beginstate DEAD_STATE;
	// Set the appropriate stuff done flag for this character being dead
	if ((get_memory_cell(1) != 0) || (get_memory_cell(2) != 0))
		set_flag(get_memory_cell(1),get_memory_cell(2),1);

	message_dialog("Angerfist collapses, his fine armor full of holes and dents. His giant hands try to gain support from the ground, which is quickly turning red under him, and push himself back up. To no avail.","Instead, Angerfist slumps to the ground a second time, rolls on one side, lifts his right fist into the air until it too falls down. Angerfist is dead.");
	set_flag(5,11,1);
break;

beginstate START_STATE;


	if ((get_flag(5,12) == 0) && (get_health(my_number()) < 150)) {
		reset_dialog();
		add_dialog_str(0,"Angerfist staggers backwards from the fury of your onslaught. For a brief moment you simply stare at each other. The ogre breathes heavily, his eyes scanning you for weaknesses. He raises himself into his full height and roars:",0);
		add_dialog_str(1,"_Witch! Grant me strength!_ Something happens. Magical energy flickers all over the cave and converges into Angerfist in a bright yellow wave of power. Suddenly the ogre seems to stand taller and hold his greatsword with more competence.",0);
		add_dialog_str(2,"No more words are had. Angerfist howls his maddened rage and lunges at you.",0);
		run_dialog(1);
		set_char_status(my_number(),1,15,1,1);
		set_char_status(my_number(),15,8,1,1);
		put_sparkles_on_char(my_number(),2,6);
		run_animation_sound(4);
		force_instant_terrain_redraw();
		set_flag(5,12,1);
}

	// if I have a target for some reason, go attack it
	if (target_ok()) {
		if (dist_to_char(get_target()) <= 16)
			set_state(3);
			else set_target(ME,-1);
		}
	
	// Look for a target, attack it if visible
	if (select_target(ME,8,0)) {
		do_attack();
		set_state(3);
		}
		
	// Have I been hit? Strike back!
	if (who_hit_me() >= 0) {
		set_target(ME,who_hit_me());
		do_attack();
		set_state(3);
		}
		
	// Otherwise, just peacefully move around. Go back to start, if I'm too far
	// from where I started.
	if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
		if (get_ran(1,1,100) < 40) 
			return_to_start(ME,1);
		}
		else if (get_memory_cell(0) == 0) {
			fidget(ME,25);
			}

	// if we're in combat and the above didn't give me anything to do, just
	// stop now. Otherwise, game will keep running script, and that eats up CPU time.
	if (am_i_doing_action() == FALSE)
		end_combat_turn();
break;

beginstate 3; // attacking


	if ((get_flag(5,12) == 0) && (get_health(my_number()) < 150)) {
		reset_dialog();
		add_dialog_str(0,"Angerfist staggers backwards by the fury of your onslaught. For a brief moment you simply stare at each other. The ogre breathes heavily, his eyes scanning you for weaknesses. He raises himself into his full height and roars:",0);
		add_dialog_str(1,"_Witch! Grant me strength!_ Something happens. Magical energy flickers all over the cave and converges into Angerfist in a bright yellow wave of power. Suddenly the ogre seems to stand taller and hold his greatsword with more competence.",0);
		add_dialog_str(2,"No more words are had. Angerfist howls his maddened rage and lunges at you.",0);
		run_dialog(1);
		set_char_status(my_number(),1,15,1,1);
		set_char_status(my_number(),5,4,1,1);
		set_char_status(my_number(),15,8,1,1);
		put_sparkles_on_char(my_number(),2,6);
		run_animation_sound(4);
		force_instant_terrain_redraw();
		set_flag(5,12,1);
}

	if (target_ok() == FALSE)
		set_state(START_STATE);
	do_attack();
break;

beginstate TALKING_STATE;
	if (get_memory_cell(3) == 0) {
		print_str("Talking: It doesn't respond.");
		end();
		}
	begin_talk_mode(get_memory_cell(3));
break;
